package com.fd.spring.aop;

import org.aspectj.lang.ProceedingJoinPoint;

public class MyAdivce {
    /**
     //前置通知：目标方法运行之前调用
     //后置通知(如果出现异常不会调用)：在目标方法运行之后调用
     //环绕通知：在目标方法之前和之后都调用
     //异常拦截通知：如果出现异常，就会调用
     //后置通知(无论是否出现 异常都会调用)：在目标方法运行之后调用
     */
    //前置通知
    public  void before(){
        System.out.println("这是前置通知");
    }
    //后置通知
    public  void afterReturning(){
        System.out.println("这是后置通知(方法不出现异常)");
    }
    public  Object around(ProceedingJoinPoint point) throws Throwable {
        System.out.println("这是环绕通知之前部分!!");
        Object object = point.proceed(); //调用目标方法
        System.out.println("这是环绕通知之后的部分!!");
        return  object;
    }
    public  void afterException(){
        System.out.println("异常通知!");
    }
    public  void after(){
        System.out.println("这也是后置通知,就算方法发生异常也会调用!");
    }
}